import axios from './index.js'

// 标准响应数据格式: {msg: '消息', code: 200, data: Object}

//用户相关

//用户注册
export const userRegisterFun = function (loginName, pwd, rePwd, nickname, phone, headImage) {
    // loginName 用户的登录名
    // pwd 密码
    // rePwd 确认密码
    // nickname 昵称
    // phone 手机号
    // headImage 图片文件
    return axios.post('/api/user/register', //请求地址
        { loginName, pwd, rePwd, nickname, phone, headImage }, 
        {
            //文件上传
            headers: {  "Content-Type": "multipart/form-data" }
        }
    );
};

//用户登录
export const userLoginFun = function (loginName, pwd) {
    // loginName 用户的登录名
    // pwd 密码

    // 响应数据:
    // 标准的响应数据结构, 
    // 如果登录成功, 则 data 中存储当前的用户对象, 主要结构如下:
    // data: {nickname, headImage, phone, token}
    // 以上都是必要的属性, token 是身份令牌
    return axios.post('/api/user/login',
        { loginName, pwd },
        {
            headers: {  "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//用户退出登录
export const userLogOutFun = function () {
    return axios.get('/api/user/logout');
};

//基本信息修改
export const userInfoModifyFun = function (nickname, phone, headImage) {
    // nickname 昵称
    // phone 手机号
    // headImage 头像文件(用户选择时才有, 否则无此参数)

    // 响应数据:
    // 标准的响应数据结构,
    // 如果用户有选择头像, 则 data 中需要存储新头像的地址, 例如:
    // data: '新头像的地址'
    return axios.post('/api/user/infoModify', 
        { nickname, phone, headImage }, 
        {
            headers: { "Content-Type": "multipart/form-data" }
        }
    );
};

//密码修改
export const userPwdModifyFun = function (oldPwd, newPwd, rePwd) {
    // oldPwd 原密码
    // newPwd 新密码
    // rePwd 确认密码
    return axios.post('/api/user/pwdModify',
        { oldPwd, newPwd, rePwd },
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//获取用户可用的所有收货地址数据
export const userGetAddrFun = function () {
    // 响应数据:
    // 标准的响应数据结构,
    // 成功时, data 中存储收货地址数据的List集合
    // 主要结构如下:
    // data: [
    //     //标识符,姓名,手机号,地址,是否为默认地址(0非默认,1是默认)
    //     {id, name, phone, addr, defaultAddr}
    // ];
    return axios.get('/api/addr/findAll');
};

//用户设置默认地址
export const userSetDefaultAddrFun = function (id) {
    // id 地址数据的标识符
    return axios.request({
        url: '/api/addr/setDefault',
        method: 'get',
        params: {
            id: id
        }
    });
};

//用户修改指定收货地址信息
export const userModifyAddrFun = function (id, name, phone, addr) {
    // id 地址数据的标识符
    // name 收件人
    // phone 收件人手机号
    // addr 收件地址
    return axios.post('/api/addr/modify', 
        { id, name, phone, addr }, 
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//用户删除收货地址信息
export const userRemoveAddrFun = function (id) {
    // id 地址数据的标识符
    return axios.request({
        url: '/api/addr/remove',
        method: 'get',
        params: {
            id: id
        }
    });
};

//用户新增收货地址信息
export const userAddAddrFun = function (name, phone, addr, defaultAddr) {
    // name 收件人
    // phone 收件人手机号
    // addr 收件地址
    // defaultAddr 是否为默认地址(0非默认,1是默认)
    return axios.post('/api/addr/add',
        { name, phone, addr, defaultAddr }, 
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//获取登录用户的默认收货地址
export const getUserDefaultAddrFun = function () {
    // 响应数据:
    // 标准的响应数据结构,
    // 成功时, data 中存储的数据的主要结构如下:
    // data: { // 默认地址数据
    //     //收件人,手机号,收货地址
    //     name, phone, addr
    // }
    return axios.get('/api/addr/userDefault');
};
